package model

// 账号登录请求
type AccountLoginRequest struct {
	// cn 返回中文信息，en 返回英文信息，默认 en
	Lang string `json:"lang"`

	// 电话区号区号，必须以"+"开头，比如"+86"
	CountryCode string `json:"countryCode"`

	// 邮箱地址，不区分大小写
	Email string `json:"email,omitempty"`

	// 手机号 （优先检查） 以电话区号开头，比如“+8618023456789” email 和 phoneNumber 必须二选一填写一个，否则报错
	PhoneNumber string `json:"phoneNumber,omitempty"`

	// 密码
	Password string `json:"password"`
}

// websocket 握手请求实体
type HandshakeRequest struct {
	// 固定参数: userOnline
	Action string `json:"action"`
	// 登录接口获取的 AT
	AccessToken string `json:"at"`

	// 用户 apikey（可从登陆接口获取）
	Apikey string `json:"apikey"`

	Appid string `json:"appid"`

	// 8 位字母数字随机数
	Nonce string `json:"nonce"`

	// 时间戳精确到秒
	Ts int64 `json:"ts"`

	// 固定参数: app
	UserAgent string `json:"userAgent"`

	// 时间戳精确到毫秒
	Sequence int64 `json:"sequence,string"`

	// 接口版本: 8
	Version int `json:"version"`
}

// 获取首页请求实体
type HomeRequest struct {
	// cn 返回中文信息，en 返回英文信息，默认 en
	Lang string `json:"lang"`

	ClientInfo ClientInfo `json:"clientInfo"`

	GetFamily *struct{} `json:"getFamily,omitempty"`

	// 如果要获取用户信息，则非空
	GetUser *struct{} `json:"getUser,omitempty"`

	// 如果要获取 Thing 信息，则填写此字段 只会取得当前家庭下的 Thing 信息
	GetThing *GetThing `json:"getThing,omitempty"`
}

type ClientInfo struct {
	Model string `json:"model"`

	OS string `json:"os"`

	IMEI string `json:"imei"`

	RomVersion string `json:"romVersion"`

	AppVersion string `json:"appVersion"`
}

// 获取设备列表参数
type GetThing struct {
	// 获取的数量，不填则默认为 30 0 表示获取所有
	Num int `json:"num"`

	// 从哪个序号开始获取列表数据，不填则默认为-9999999
	BeginIndex int `json:"beginIndex,omitempty"`
}

// 更新4通道开关状态请求实体
type UpdateOutlet4Request struct {
	// 固定参数: update
	Action string `json:"action"`

	// 用户 apikey（可从登陆页面获取）
	Apikey string `json:"apikey"`

	// 设备 ID
	Deviceid string `json:"deviceid"`

	// app 或者 device,,表示消息是哪边推送的，app表示是app向设备下发指令,device表示设备变化之后的响应
	UserAgent string `json:"userAgent"`

	// 时间戳精确到毫秒
	Sequence int64 `json:"sequence,string"`

	// 服务端对于 params 参数采用透传方式，可能是对象也可能是对象数组。只需要发送期望改变的状态参数
	Params Outlet4Switch `json:"params"`
}

type QueryOutlet4Request struct {
	// 固定参数: query
	Action string `json:"action"`

	// 设备所属用户 apikey
	Apikey string `json:"apikey"`

	// 当前用户 apikey（可从登陆页面获取）
	SelfApikey string `json:"selfApikey,omitempty"`

	// 设备 ID
	Deviceid string `json:"deviceid"`

	// app 或者 device,,表示消息是哪边推送的，此时应该固定为app
	UserAgent string `json:"userAgent"`

	// 时间戳精确到毫秒
	Sequence int64 `json:"sequence,string"`

	// 4通道开关的状态查询参数,固定值["switches","timers"]
	Params []string `json:"params"`
}

// 查询指定设备操作列表请求实体
type DeviceOperationHistoryRequest struct {
	DeviceId string `json:"deviceid"`

	From int64 `json:"from"`

	Num int `json:"num,omitempty"`
}
